﻿2026-08-28T15:28:27.7342441Z Current runner version: '2.336.0'
2026-08-28T15:28:27.7380371Z ##[group]Runner Image Provisioner
2026-08-28T15:28:27.7381698Z Hosted Compute Agent
2026-08-28T15:28:27.7382942Z Version: 20260819.586
2026-08-28T15:28:27.7384211Z Commit: 3cc4a88dfa507ef76119ad1bb3eccc6378bb2b76
2026-08-28T15:28:27.7385509Z Build Date: 2026-08-18T23:20:18Z
2026-08-28T15:28:27.7386797Z Worker ID: {9b5f4210-4305-46ad-9f49-a6c5194bf1da}
2026-08-28T15:28:27.7388117Z Azure Region: westus
2026-08-28T15:28:27.7389108Z ##[endgroup]
2026-08-28T15:28:27.7392671Z ##[group]Operating System
2026-08-28T15:28:27.7393864Z Ubuntu
2026-08-28T15:28:27.7394941Z 24.04.4
2026-08-28T15:28:27.7395869Z LTS
2026-08-28T15:28:27.7396788Z ##[endgroup]
2026-08-28T15:28:27.7398127Z ##[group]Runner Image
2026-08-28T15:28:27.7399263Z Image: ubuntu-24.04
2026-08-28T15:28:27.7400330Z Version: 20260823.283.1
2026-08-28T15:28:27.7402889Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260823.283/images/ubuntu/Ubuntu2404-Readme.md
2026-08-28T15:28:27.7405875Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260823.283
2026-08-28T15:28:27.7407739Z ##[endgroup]
2026-08-28T15:28:27.7409817Z ##[group]GITHUB_TOKEN Permissions
2026-08-28T15:28:27.7413084Z Contents: read
2026-08-28T15:28:27.7414225Z Metadata: read
2026-08-28T15:28:27.7415211Z ##[endgroup]
2026-08-28T15:28:27.7418399Z Secret source: Actions
2026-08-28T15:28:27.7420402Z Prepare workflow directory
2026-08-28T15:28:27.8215024Z Prepare all required actions
2026-08-28T15:28:27.8290916Z Getting action download info
2026-08-28T15:28:28.2629396Z Download action repository 'actions/checkout@v4' (SHA:11d5960a326750d5838078e36cf38b85af677262)
2026-08-28T15:28:28.3885133Z Download action repository 'actions/setup-python@v5' (SHA:a26af69be951a213d495a4c3e4e4022e16d87065)
2026-08-28T15:28:28.5819855Z Complete job name: Migration, contracts, quality and repository safety
2026-08-28T15:28:28.6817671Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-28T15:28:28.6832296Z ##[group]Run actions/checkout@v4
2026-08-28T15:28:28.6833585Z with:
2026-08-28T15:28:28.6834281Z   fetch-depth: 0
2026-08-28T15:28:28.6835096Z   repository: Gamexgit/FinanceManager
2026-08-28T15:28:28.6843652Z   token: ***
2026-08-28T15:28:28.6844459Z   ssh-strict: true
2026-08-28T15:28:28.6845239Z   ssh-user: git
2026-08-28T15:28:28.6846033Z   persist-credentials: true
2026-08-28T15:28:28.6846924Z   clean: true
2026-08-28T15:28:28.6847751Z   sparse-checkout-cone-mode: true
2026-08-28T15:28:28.6848757Z   fetch-tags: false
2026-08-28T15:28:28.6849571Z   show-progress: true
2026-08-28T15:28:28.6850338Z   lfs: false
2026-08-28T15:28:28.6851142Z   submodules: false
2026-08-28T15:28:28.6852211Z   set-safe-directory: true
2026-08-28T15:28:28.6853174Z   allow-unsafe-pr-checkout: false
2026-08-28T15:28:28.6854525Z env:
2026-08-28T15:28:28.6855269Z   PYTHONPATH: src
2026-08-28T15:28:28.6856042Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:28.6857263Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:28.6858793Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:28.6860270Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:28.6861357Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:28.6862467Z ##[endgroup]
2026-08-28T15:28:28.9317149Z Syncing repository: Gamexgit/FinanceManager
2026-08-28T15:28:28.9319918Z ##[group]Getting Git version info
2026-08-28T15:28:28.9321219Z Working directory is '/home/runner/work/FinanceManager/FinanceManager'
2026-08-28T15:28:28.9323405Z [command]/usr/bin/git version
2026-08-28T15:28:28.9324332Z git version 2.55.0
2026-08-28T15:28:28.9327134Z ##[endgroup]
2026-08-28T15:28:28.9335473Z Temporarily overriding HOME='/home/runner/work/_temp/b955dc74-f069-41d1-9ca5-0b48e1f21995' before making global git config changes
2026-08-28T15:28:28.9354813Z Adding repository directory to the temporary git global config as a safe directory
2026-08-28T15:28:28.9356908Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/FinanceManager/FinanceManager
2026-08-28T15:28:28.9397103Z Deleting the contents of '/home/runner/work/FinanceManager/FinanceManager'
2026-08-28T15:28:28.9400730Z ##[group]Initializing the repository
2026-08-28T15:28:28.9403120Z [command]/usr/bin/git init /home/runner/work/FinanceManager/FinanceManager
2026-08-28T15:28:28.9417969Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-08-28T15:28:28.9447155Z hint: will change to "main" in Git 3.0. To configure the initial branch name
2026-08-28T15:28:28.9453043Z hint: to use in all of your new repositories, which will suppress this warning,
2026-08-28T15:28:28.9454649Z hint: call:
2026-08-28T15:28:28.9455888Z hint:
2026-08-28T15:28:28.9457036Z hint: 	git config --global init.defaultBranch <name>
2026-08-28T15:28:28.9458585Z hint:
2026-08-28T15:28:28.9459808Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-08-28T15:28:28.9462187Z hint: 'development'. The just-created branch can be renamed via this command:
2026-08-28T15:28:28.9464051Z hint:
2026-08-28T15:28:28.9465514Z hint: 	git branch -m <name>
2026-08-28T15:28:28.9466930Z hint:
2026-08-28T15:28:28.9468846Z hint: Disable this message with "git config set advice.defaultBranchName false"
2026-08-28T15:28:28.9471341Z Initialized empty Git repository in /home/runner/work/FinanceManager/FinanceManager/.git/
2026-08-28T15:28:28.9480060Z [command]/usr/bin/git remote add origin https://github.com/Gamexgit/FinanceManager
2026-08-28T15:28:28.9483143Z ##[endgroup]
2026-08-28T15:28:28.9484382Z ##[group]Disabling automatic garbage collection
2026-08-28T15:28:28.9485781Z [command]/usr/bin/git config --local gc.auto 0
2026-08-28T15:28:28.9488104Z ##[endgroup]
2026-08-28T15:28:28.9489230Z ##[group]Setting up auth
2026-08-28T15:28:28.9490333Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-08-28T15:28:28.9505488Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-08-28T15:28:29.0084454Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-08-28T15:28:29.0106503Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-08-28T15:28:29.0114402Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-08-28T15:28:29.0133948Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-08-28T15:28:29.0394098Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-08-28T15:28:29.0436916Z ##[endgroup]
2026-08-28T15:28:29.0439088Z ##[group]Fetching the repository
2026-08-28T15:28:29.0450886Z [command]/usr/bin/git -c protocol.version=2 fetch --prune --no-recurse-submodules origin +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/* +cc2b69028ee869fdec18e0f5cc1dc84c115cf6b9:refs/remotes/pull/56/merge
2026-08-28T15:28:30.0716153Z From https://github.com/Gamexgit/FinanceManager
2026-08-28T15:28:30.0718952Z  * [new branch]      Sprint14/twr-xirr-performance-attribution -> origin/Sprint14/twr-xirr-performance-attribution
2026-08-28T15:28:30.0722593Z  * [new branch]      Sprint15/household-import-transfer-reconciliation-v1 -> origin/Sprint15/household-import-transfer-reconciliation-v1
2026-08-28T15:28:30.0726356Z  * [new branch]      Sprint16/hotfix-openpyxl-runtime-dependency -> origin/Sprint16/hotfix-openpyxl-runtime-dependency
2026-08-28T15:28:30.0730938Z  * [new branch]      Sprint16/smart-household-inbox-real-data-onboarding-v2 -> origin/Sprint16/smart-household-inbox-real-data-onboarding-v2
2026-08-28T15:28:30.0735473Z  * [new branch]      feat/budget-analytics-data-explorer-v1   -> origin/feat/budget-analytics-data-explorer-v1
2026-08-28T15:28:30.0739530Z  * [new branch]      feat/budget-categories-duplicates-cleanup -> origin/feat/budget-categories-duplicates-cleanup
2026-08-28T15:28:30.0743078Z  * [new branch]      feat/budget-categories-ux-fix            -> origin/feat/budget-categories-ux-fix
2026-08-28T15:28:30.0745835Z  * [new branch]      feat/budget-import-production-v2         -> origin/feat/budget-import-production-v2
2026-08-28T15:28:30.0749071Z  * [new branch]      feat/budget-monthly-import-rule-learning-v1 -> origin/feat/budget-monthly-import-rule-learning-v1
2026-08-28T15:28:30.0752017Z  * [new branch]      feat/budget-phase-1-4                    -> origin/feat/budget-phase-1-4
2026-08-28T15:28:30.0754837Z  * [new branch]      feat/budget-planning-forecast-v1         -> origin/feat/budget-planning-forecast-v1
2026-08-28T15:28:30.0757598Z  * [new branch]      feat/budget-planning-usability-v2        -> origin/feat/budget-planning-usability-v2
2026-08-28T15:28:30.0760814Z  * [new branch]      feat/budget-review-bulk-assign-confirm   -> origin/feat/budget-review-bulk-assign-confirm
2026-08-28T15:28:30.0764382Z  * [new branch]      feat/budget-workflow-help-ux             -> origin/feat/budget-workflow-help-ux
2026-08-28T15:28:30.0767589Z  * [new branch]      feat/finance-command-center-monthly-close-v1 -> origin/feat/finance-command-center-monthly-close-v1
2026-08-28T15:28:30.0770692Z  * [new branch]      feat/fixed-costs-subscriptions-v1        -> origin/feat/fixed-costs-subscriptions-v1
2026-08-28T15:28:30.0774511Z  * [new branch]      feat/grocery-matching-review-learning-v2 -> origin/feat/grocery-matching-review-learning-v2
2026-08-28T15:28:30.0777337Z  * [new branch]      feat/grocery-product-price-providers-v1  -> origin/feat/grocery-product-price-providers-v1
2026-08-28T15:28:30.0779758Z  * [new branch]      feat/migros-product-savings-grocery-optimizer-v1 -> origin/feat/migros-product-savings-grocery-optimizer-v1
2026-08-28T15:28:30.0782431Z  * [new branch]      feat/mobile-nav-income-csv-final         -> origin/feat/mobile-nav-income-csv-final
2026-08-28T15:28:30.0785256Z  * [new branch]      feat/mobile-nav-income-hotfix-v2         -> origin/feat/mobile-nav-income-hotfix-v2
2026-08-28T15:28:30.0788258Z  * [new branch]      feat/mobile-nav-income-planning-v1       -> origin/feat/mobile-nav-income-planning-v1
2026-08-28T15:28:30.0794201Z  * [new branch]      fix/manual-entry-uat-flows               -> origin/fix/manual-entry-uat-flows
2026-08-28T15:28:30.0796981Z  * [new branch]      fix/sprint16.2-insurance-family-order    -> origin/fix/sprint16.2-insurance-family-order
2026-08-28T15:28:30.0800700Z  * [new branch]      hotfix/sprint13-global-portfolio-aggregation -> origin/hotfix/sprint13-global-portfolio-aggregation
2026-08-28T15:28:30.0804484Z  * [new branch]      hotfix/sprint20-wealth-history-contract  -> origin/hotfix/sprint20-wealth-history-contract
2026-08-28T15:28:30.0808354Z  * [new branch]      hotfix/sprint23.1-asset-refresh-idempotency -> origin/hotfix/sprint23.1-asset-refresh-idempotency
2026-08-28T15:28:30.0813358Z  * [new branch]      hotfix/sprint23.2-unified-asset-refresh-usdt -> origin/hotfix/sprint23.2-unified-asset-refresh-usdt
2026-08-28T15:28:30.0816968Z  * [new branch]      hotfix/sprint8-kpi-overflow              -> origin/hotfix/sprint8-kpi-overflow
2026-08-28T15:28:30.0819618Z  * [new branch]      hotfix/sprint8-readonly-render           -> origin/hotfix/sprint8-readonly-render
2026-08-28T15:28:30.0822738Z  * [new branch]      integration/portfolio-phase3-to-main     -> origin/integration/portfolio-phase3-to-main
2026-08-28T15:28:30.0825129Z  * [new branch]      main                                     -> origin/main
2026-08-28T15:28:30.0827220Z  * [new branch]      sprint10/portfolio-go-live               -> origin/sprint10/portfolio-go-live
2026-08-28T15:28:30.0830036Z  * [new branch]      sprint11/portfolio-completeness-ux       -> origin/sprint11/portfolio-completeness-ux
2026-08-28T15:28:30.0833052Z  * [new branch]      sprint12/truewealth-verified-import      -> origin/sprint12/truewealth-verified-import
2026-08-28T15:28:30.0836097Z  * [new branch]      sprint13/postfinance-ledger-import       -> origin/sprint13/postfinance-ledger-import
2026-08-28T15:28:30.0839525Z  * [new branch]      sprint16.1/classification-coverage-import-readiness -> origin/sprint16.1/classification-coverage-import-readiness
2026-08-28T15:28:30.0843671Z  * [new branch]      sprint16.2/first-import-calibration-portal-flow -> origin/sprint16.2/first-import-calibration-portal-flow
2026-08-28T15:28:30.0847614Z  * [new branch]      sprint16.3/import-readiness-batched-decisions-performance -> origin/sprint16.3/import-readiness-batched-decisions-performance
2026-08-28T15:28:30.0850961Z  * [new branch]      sprint17a/data-truth                     -> origin/sprint17a/data-truth
2026-08-28T15:28:30.0854967Z  * [new branch]      sprint17b/equity-quote-refresh           -> origin/sprint17b/equity-quote-refresh
2026-08-28T15:28:30.0857745Z  * [new branch]      sprint17b/household-cockpit              -> origin/sprint17b/household-cockpit
2026-08-28T15:28:30.0860635Z  * [new branch]      sprint17c/data-truth-navigation-today-lite -> origin/sprint17c/data-truth-navigation-today-lite
2026-08-28T15:28:30.0863981Z  * [new branch]      sprint19/prior-year-actuals-simple-budget-v1 -> origin/sprint19/prior-year-actuals-simple-budget-v1
2026-08-28T15:28:30.0866658Z  * [new branch]      sprint2/navigation-design-shell          -> origin/sprint2/navigation-design-shell
2026-08-28T15:28:30.0869258Z  * [new branch]      sprint20/performance-data-readiness-v1   -> origin/sprint20/performance-data-readiness-v1
2026-08-28T15:28:30.0873114Z  * [new branch]      sprint20b/performance-activation-daily-valuations-v1 -> origin/sprint20b/performance-activation-daily-valuations-v1
2026-08-28T15:28:30.0877093Z  * [new branch]      sprint20e/market-data-recovery-crypto-activation-v1 -> origin/sprint20e/market-data-recovery-crypto-activation-v1
2026-08-28T15:28:30.0880567Z  * [new branch]      sprint20e/never-run-status-hotfix        -> origin/sprint20e/never-run-status-hotfix
2026-08-28T15:28:30.0883757Z  * [new branch]      sprint20e/provider-provenance-ui-hotfix  -> origin/sprint20e/provider-provenance-ui-hotfix
2026-08-28T15:28:30.0887035Z  * [new branch]      sprint20g1/crypto-reconciliation-cockpit -> origin/sprint20g1/crypto-reconciliation-cockpit
2026-08-28T15:28:30.0890481Z  * [new branch]      sprint20h.1/postfinance-upload-hardening-followup -> origin/sprint20h.1/postfinance-upload-hardening-followup
2026-08-28T15:28:30.0894201Z  * [new branch]      sprint20h.1/postfinance-upload-readiness -> origin/sprint20h.1/postfinance-upload-readiness
2026-08-28T15:28:30.0897384Z  * [new branch]      sprint21/current-import-performance-cockpit -> origin/sprint21/current-import-performance-cockpit
2026-08-28T15:28:30.0900575Z  * [new branch]      sprint3.1/reconciliation-semantic-hardening -> origin/sprint3.1/reconciliation-semantic-hardening
2026-08-28T15:28:30.0904009Z  * [new branch]      sprint3/reconciliation-snapshot-foundation -> origin/sprint3/reconciliation-snapshot-foundation
2026-08-28T15:28:30.0907161Z  * [new branch]      sprint4.1/portfolio-policy-contract-hardening -> origin/sprint4.1/portfolio-policy-contract-hardening
2026-08-28T15:28:30.0910491Z  * [new branch]      sprint4/portfolio-policy-foundation      -> origin/sprint4/portfolio-policy-foundation
2026-08-28T15:28:30.0913823Z  * [new branch]      sprint5/portfolio-performance-foundation -> origin/sprint5/portfolio-performance-foundation
2026-08-28T15:28:30.1107277Z  * [new branch]      sprint6/portfolio-data-ingestion-reconciliation -> origin/sprint6/portfolio-data-ingestion-reconciliation
2026-08-28T15:28:30.1114068Z  * [new branch]      sprint7/postfinance-portfolio-source     -> origin/sprint7/postfinance-portfolio-source
2026-08-28T15:28:30.1133769Z  * [new branch]      sprint8/market-fx-benchmark-risk         -> origin/sprint8/market-fx-benchmark-risk
2026-08-28T15:28:30.1143884Z  * [new branch]      sprint9/portfolio-basis-policy           -> origin/sprint9/portfolio-basis-policy
2026-08-28T15:28:30.1146224Z  * [new tag]         v0.3.0                                   -> v0.3.0
2026-08-28T15:28:30.1148054Z  * [new tag]         v0.3.1                                   -> v0.3.1
2026-08-28T15:28:30.1149889Z  * [new tag]         v0.3.2                                   -> v0.3.2
2026-08-28T15:28:30.1152066Z  * [new ref]         cc2b69028ee869fdec18e0f5cc1dc84c115cf6b9 -> pull/56/merge
2026-08-28T15:28:30.1156270Z ##[endgroup]
2026-08-28T15:28:30.1158020Z ##[group]Determining the checkout info
2026-08-28T15:28:30.1159981Z ##[endgroup]
2026-08-28T15:28:30.1161203Z [command]/usr/bin/git sparse-checkout disable
2026-08-28T15:28:30.1164855Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-08-28T15:28:30.1168811Z ##[group]Checking out the ref
2026-08-28T15:28:30.1170495Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/56/merge
2026-08-28T15:28:30.1569752Z Note: switching to 'refs/remotes/pull/56/merge'.
2026-08-28T15:28:30.1571106Z 
2026-08-28T15:28:30.1571721Z You are in 'detached HEAD' state. You can look around, make experimental
2026-08-28T15:28:30.1573895Z changes and commit them, and you can discard any commits you make in this
2026-08-28T15:28:30.1575473Z state without impacting any branches by switching back to a branch.
2026-08-28T15:28:30.1576354Z 
2026-08-28T15:28:30.1576999Z If you want to create a new branch to retain commits you create, you may
2026-08-28T15:28:30.1578030Z do so (now or later) by using -c with the switch command. Example:
2026-08-28T15:28:30.1578629Z 
2026-08-28T15:28:30.1578873Z   git switch -c <new-branch-name>
2026-08-28T15:28:30.1579608Z 
2026-08-28T15:28:30.1579860Z Or undo this operation with:
2026-08-28T15:28:30.1580279Z 
2026-08-28T15:28:30.1580483Z   git switch -
2026-08-28T15:28:30.1580785Z 
2026-08-28T15:28:30.1671757Z Turn off this advice by setting config variable advice.detachedHead to false
2026-08-28T15:28:30.1673711Z 
2026-08-28T15:28:30.1675066Z HEAD is now at cc2b690 Merge 0f7a5b7ad9ec7f7c617ba1686ee4c27b3599fa47 into bef766b54576807f9963696202ada9bf32a98167
2026-08-28T15:28:30.1692706Z ##[endgroup]
2026-08-28T15:28:30.1707281Z [command]/usr/bin/git log -1 --format=%H
2026-08-28T15:28:30.1740394Z cc2b69028ee869fdec18e0f5cc1dc84c115cf6b9
2026-08-28T15:28:30.2058591Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-28T15:28:30.2062331Z ##[group]Run actions/setup-python@v5
2026-08-28T15:28:30.2062941Z with:
2026-08-28T15:28:30.2063400Z   python-version: 3.11
2026-08-28T15:28:30.2063883Z   cache: pip
2026-08-28T15:28:30.2064385Z   cache-dependency-path: requirements-ci.txt
2026-08-28T15:28:30.2065045Z   check-latest: false
2026-08-28T15:28:30.2069665Z   token: ***
2026-08-28T15:28:30.2070144Z   update-environment: true
2026-08-28T15:28:30.2070679Z   allow-prereleases: false
2026-08-28T15:28:30.2071194Z   freethreaded: false
2026-08-28T15:28:30.2071661Z env:
2026-08-28T15:28:30.2072223Z   PYTHONPATH: src
2026-08-28T15:28:30.2072704Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:30.2073529Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:30.2074614Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:30.2075589Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:30.2076358Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:30.2076921Z ##[endgroup]
2026-08-28T15:28:30.3815069Z ##[group]Installed versions
2026-08-28T15:28:30.3909617Z (node:2023) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-08-28T15:28:30.3913559Z Successfully set up CPython (3.11.16)
2026-08-28T15:28:30.3916567Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-08-28T15:28:30.3920038Z ##[endgroup]
2026-08-28T15:28:30.4466447Z [command]/opt/hostedtoolcache/Python/3.11.16/x64/bin/pip cache dir
2026-08-28T15:28:30.8672957Z /home/runner/.cache/pip
2026-08-28T15:28:31.1258546Z pip cache is not found
2026-08-28T15:28:31.1470610Z ##[group]Run python -m pip install -e . -r requirements-ci.txt
2026-08-28T15:28:31.1471275Z [36;1mpython -m pip install -e . -r requirements-ci.txt[0m
2026-08-28T15:28:31.1518062Z shell: /usr/bin/bash -e {0}
2026-08-28T15:28:31.1518411Z env:
2026-08-28T15:28:31.1518664Z   PYTHONPATH: src
2026-08-28T15:28:31.1518949Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:31.1519385Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:31.1520013Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:31.1520551Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:31.1520984Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:31.1521368Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:31.1522239Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:31.1522745Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:31.1523263Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:31.1523696Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:31.1524130Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:31.1524506Z ##[endgroup]
2026-08-28T15:28:31.9354167Z Obtaining file:///home/runner/work/FinanceManager/FinanceManager
2026-08-28T15:28:31.9368158Z   Installing build dependencies: started
2026-08-28T15:28:32.7745427Z   Installing build dependencies: finished with status 'done'
2026-08-28T15:28:32.7753831Z   Checking if build backend supports build_editable: started
2026-08-28T15:28:33.0957171Z   Checking if build backend supports build_editable: finished with status 'done'
2026-08-28T15:28:33.0982715Z   Getting requirements to build editable: started
2026-08-28T15:28:33.4080157Z   Getting requirements to build editable: finished with status 'done'
2026-08-28T15:28:33.4092145Z   Preparing editable metadata (pyproject.toml): started
2026-08-28T15:28:33.6017031Z   Preparing editable metadata (pyproject.toml): finished with status 'done'
2026-08-28T15:28:33.7033541Z Collecting fastapi==0.136.1 (from -r requirements-ci.txt (line 1))
2026-08-28T15:28:33.7487877Z   Downloading fastapi-0.136.1-py3-none-any.whl.metadata (28 kB)
2026-08-28T15:28:33.7844330Z Collecting httpx==0.28.1 (from -r requirements-ci.txt (line 2))
2026-08-28T15:28:33.7884298Z   Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)
2026-08-28T15:28:33.8060706Z Collecting Jinja2==3.1.6 (from -r requirements-ci.txt (line 3))
2026-08-28T15:28:33.8111528Z   Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
2026-08-28T15:28:33.8348893Z Collecting openpyxl==3.1.5 (from -r requirements-ci.txt (line 4))
2026-08-28T15:28:33.8372799Z   Downloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
2026-08-28T15:28:33.9527574Z Collecting pandas==3.0.3 (from -r requirements-ci.txt (line 5))
2026-08-28T15:28:33.9586678Z   Downloading pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (79 kB)
2026-08-28T15:28:34.0101492Z Collecting plotly==6.7.0 (from -r requirements-ci.txt (line 6))
2026-08-28T15:28:34.0140890Z   Downloading plotly-6.7.0-py3-none-any.whl.metadata (8.6 kB)
2026-08-28T15:28:34.1142690Z Collecting pydantic==2.13.4 (from -r requirements-ci.txt (line 7))
2026-08-28T15:28:34.1186425Z   Downloading pydantic-2.13.4-py3-none-any.whl.metadata (109 kB)
2026-08-28T15:28:34.1464007Z Collecting pypdf==6.14.2 (from -r requirements-ci.txt (line 8))
2026-08-28T15:28:34.1499071Z   Downloading pypdf-6.14.2-py3-none-any.whl.metadata (7.2 kB)
2026-08-28T15:28:34.1815015Z Collecting pytest==9.0.2 (from -r requirements-ci.txt (line 9))
2026-08-28T15:28:34.1851000Z   Downloading pytest-9.0.2-py3-none-any.whl.metadata (7.6 kB)
2026-08-28T15:28:34.5185252Z Collecting ruff==0.15.13 (from -r requirements-ci.txt (line 10))
2026-08-28T15:28:34.5218908Z   Downloading ruff-0.15.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (26 kB)
2026-08-28T15:28:34.5549177Z Collecting streamlit==1.57.0 (from -r requirements-ci.txt (line 11))
2026-08-28T15:28:34.5596870Z   Downloading streamlit-1.57.0-py3-none-any.whl.metadata (9.6 kB)
2026-08-28T15:28:34.5836134Z Collecting uvicorn==0.47.0 (from -r requirements-ci.txt (line 12))
2026-08-28T15:28:34.5875529Z   Downloading uvicorn-0.47.0-py3-none-any.whl.metadata (6.7 kB)
2026-08-28T15:28:34.6018872Z Collecting xlrd==2.0.2 (from -r requirements-ci.txt (line 13))
2026-08-28T15:28:34.6050994Z   Downloading xlrd-2.0.2-py2.py3-none-any.whl.metadata (3.5 kB)
2026-08-28T15:28:34.6296734Z Collecting yfinance==1.3.0 (from -r requirements-ci.txt (line 14))
2026-08-28T15:28:34.6340561Z   Downloading yfinance-1.3.0-py2.py3-none-any.whl.metadata (6.1 kB)
2026-08-28T15:28:34.6581629Z Collecting starlette>=0.46.0 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-28T15:28:34.6617983Z   Downloading starlette-1.6.0-py3-none-any.whl.metadata (6.4 kB)
2026-08-28T15:28:34.6801210Z Collecting typing-extensions>=4.8.0 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-28T15:28:34.6837701Z   Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)
2026-08-28T15:28:34.6998476Z Collecting typing-inspection>=0.4.2 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-28T15:28:34.7030514Z   Downloading typing_inspection-0.4.4-py3-none-any.whl.metadata (2.6 kB)
2026-08-28T15:28:34.7138620Z Collecting annotated-doc>=0.0.2 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-28T15:28:34.7169825Z   Downloading annotated_doc-0.0.5-py3-none-any.whl.metadata (6.5 kB)
2026-08-28T15:28:34.7373420Z Collecting anyio (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-28T15:28:34.7409150Z   Downloading anyio-4.14.2-py3-none-any.whl.metadata (4.6 kB)
2026-08-28T15:28:34.7606205Z Collecting certifi (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-28T15:28:34.7643687Z   Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)
2026-08-28T15:28:34.7807171Z Collecting httpcore==1.* (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-28T15:28:34.7840864Z   Downloading httpcore-1.0.9-py3-none-any.whl.metadata (21 kB)
2026-08-28T15:28:34.7999535Z Collecting idna (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-28T15:28:34.8037297Z   Downloading idna-3.19-py3-none-any.whl.metadata (9.2 kB)
2026-08-28T15:28:34.8535006Z Collecting MarkupSafe>=2.0 (from Jinja2==3.1.6->-r requirements-ci.txt (line 3))
2026-08-28T15:28:34.8573018Z   Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
2026-08-28T15:28:34.8683460Z Collecting et-xmlfile (from openpyxl==3.1.5->-r requirements-ci.txt (line 4))
2026-08-28T15:28:34.8714982Z   Downloading et_xmlfile-2.0.0-py3-none-any.whl.metadata (2.7 kB)
2026-08-28T15:28:35.0898539Z Collecting numpy>=1.26.0 (from pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-28T15:28:35.0931762Z   Downloading numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (6.6 kB)
2026-08-28T15:28:35.1071199Z Collecting python-dateutil>=2.8.2 (from pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-28T15:28:35.1105858Z   Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
2026-08-28T15:28:35.1465012Z Collecting narwhals>=1.15.1 (from plotly==6.7.0->-r requirements-ci.txt (line 6))
2026-08-28T15:28:35.1499987Z   Downloading narwhals-2.25.0-py3-none-any.whl.metadata (15 kB)
2026-08-28T15:28:35.1686737Z Collecting packaging (from plotly==6.7.0->-r requirements-ci.txt (line 6))
2026-08-28T15:28:35.1719997Z   Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
2026-08-28T15:28:35.1839491Z Collecting annotated-types>=0.6.0 (from pydantic==2.13.4->-r requirements-ci.txt (line 7))
2026-08-28T15:28:35.1873154Z   Downloading annotated_types-0.8.0-py3-none-any.whl.metadata (15 kB)
2026-08-28T15:28:35.8873719Z Collecting pydantic-core==2.46.4 (from pydantic==2.13.4->-r requirements-ci.txt (line 7))
2026-08-28T15:28:35.8915790Z   Downloading pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.6 kB)
2026-08-28T15:28:35.9050466Z Collecting iniconfig>=1.0.1 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-28T15:28:35.9107437Z   Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB)
2026-08-28T15:28:35.9243493Z Collecting pluggy<2,>=1.5 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-28T15:28:35.9297102Z   Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)
2026-08-28T15:28:35.9484706Z Collecting pygments>=2.7.2 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-28T15:28:35.9524096Z   Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB)
2026-08-28T15:28:35.9705980Z Collecting altair!=5.4.0,!=5.4.1,<7,>=4.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:35.9755393Z   Downloading altair-6.2.2-py3-none-any.whl.metadata (11 kB)
2026-08-28T15:28:35.9921468Z Collecting blinker<2,>=1.5.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:35.9966648Z   Downloading blinker-1.9.0-py3-none-any.whl.metadata (1.6 kB)
2026-08-28T15:28:36.0138901Z Collecting cachetools<8,>=5.5 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.0192045Z   Downloading cachetools-7.1.7-py3-none-any.whl.metadata (5.5 kB)
2026-08-28T15:28:36.0358257Z Collecting click<9,>=7.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.0589737Z   Downloading click-8.5.0-py3-none-any.whl.metadata (2.6 kB)
2026-08-28T15:28:36.0799519Z Collecting gitpython!=3.1.19,<4,>=3.0.7 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.0860687Z   Downloading gitpython-3.1.61-py3-none-any.whl.metadata (13 kB)
2026-08-28T15:28:36.2480563Z Collecting pillow<13,>=7.1.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.2524782Z   Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (9.1 kB)
2026-08-28T15:28:36.2718753Z Collecting pydeck<1,>=0.8.0b4 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.2761304Z   Downloading pydeck-0.9.3-py2.py3-none-any.whl.metadata (4.2 kB)
2026-08-28T15:28:36.4225992Z Collecting protobuf<8,>=3.20 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.4261380Z   Downloading protobuf-7.36.0-cp310-abi3-manylinux2014_x86_64.whl.metadata (595 bytes)
2026-08-28T15:28:36.5485824Z Collecting pyarrow>=7.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.5520562Z   Downloading pyarrow-25.0.1-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (3.0 kB)
2026-08-28T15:28:36.5771332Z Collecting requests<3,>=2.27 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.5806335Z   Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
2026-08-28T15:28:36.5973274Z Collecting tenacity<10,>=8.1.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.6007507Z   Downloading tenacity-9.1.4-py3-none-any.whl.metadata (1.2 kB)
2026-08-28T15:28:36.6125272Z Collecting toml<2,>=0.10.1 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.6159387Z   Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)
2026-08-28T15:28:36.6525889Z Collecting httptools>=0.6.3 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.6565313Z   Downloading httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (3.5 kB)
2026-08-28T15:28:36.6732479Z Collecting python-multipart>=0.0.10 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.6765887Z   Downloading python_multipart-0.0.32-py3-none-any.whl.metadata (2.1 kB)
2026-08-28T15:28:36.7860335Z Collecting websockets>=12.0.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.7902315Z   Downloading websockets-17.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (6.3 kB)
2026-08-28T15:28:36.8032882Z Collecting itsdangerous>=2.1.2 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.8071453Z   Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
2026-08-28T15:28:36.8518754Z Collecting watchdog<7,>=2.1.5 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:36.8562502Z   Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl.metadata (44 kB)
2026-08-28T15:28:36.8739386Z Collecting h11>=0.8 (from uvicorn==0.47.0->-r requirements-ci.txt (line 12))
2026-08-28T15:28:36.8775046Z   Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)
2026-08-28T15:28:36.8974057Z Collecting multitasking>=0.0.7 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:36.9009394Z   Downloading multitasking-0.0.13-py3-none-any.whl.metadata (16 kB)
2026-08-28T15:28:36.9209847Z Collecting platformdirs>=2.0.0 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:36.9246806Z   Downloading platformdirs-4.11.5-py3-none-any.whl.metadata (5.5 kB)
2026-08-28T15:28:36.9601061Z Collecting pytz>=2022.5 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:36.9637688Z   Downloading pytz-2026.3.post1-py2.py3-none-any.whl.metadata (22 kB)
2026-08-28T15:28:37.0057033Z Collecting frozendict>=2.3.4 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:37.0106674Z   Downloading frozendict-2.4.7-py3-none-any.whl.metadata (23 kB)
2026-08-28T15:28:37.0343108Z Collecting peewee>=3.16.2 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:37.0380508Z   Downloading peewee-4.4.0-py3-none-any.whl.metadata (10 kB)
2026-08-28T15:28:37.0566028Z Collecting beautifulsoup4>=4.11.1 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:37.0602489Z   Downloading beautifulsoup4-4.15.0-py3-none-any.whl.metadata (3.8 kB)
2026-08-28T15:28:37.1237477Z Collecting curl_cffi>=0.15 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:37.1276257Z   Downloading curl_cffi-0.16.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (17 kB)
2026-08-28T15:28:37.1681070Z Collecting jsonschema>=3.0 (from altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:37.1713346Z   Downloading jsonschema-4.26.0-py3-none-any.whl.metadata (7.6 kB)
2026-08-28T15:28:37.1921748Z Collecting gitdb<5,>=4.0.1 (from gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:37.1951438Z   Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)
2026-08-28T15:28:37.2078371Z Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:37.2113445Z   Downloading smmap-5.0.3-py3-none-any.whl.metadata (4.6 kB)
2026-08-28T15:28:37.3988061Z Collecting charset_normalizer<4,>=2 (from requests<3,>=2.27->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:37.4043526Z   Downloading charset_normalizer-3.5.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (45 kB)
2026-08-28T15:28:37.4318207Z Collecting urllib3<3,>=1.26 (from requests<3,>=2.27->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:37.4356105Z   Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
2026-08-28T15:28:37.4660873Z Collecting soupsieve>=1.6.1 (from beautifulsoup4>=4.11.1->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:37.4705371Z   Downloading soupsieve-2.9.2-py3-none-any.whl.metadata (4.6 kB)
2026-08-28T15:28:37.5772822Z Collecting cffi>=2.0.0 (from curl_cffi>=0.15->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:37.5811591Z   Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB)
2026-08-28T15:28:37.5967873Z Collecting pycparser (from cffi>=2.0.0->curl_cffi>=0.15->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:37.6006138Z   Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)
2026-08-28T15:28:37.6192932Z Collecting attrs>=22.2.0 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:37.6228779Z   Downloading attrs-26.1.0-py3-none-any.whl.metadata (8.8 kB)
2026-08-28T15:28:37.6372022Z Collecting jsonschema-specifications>=2023.03.6 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:37.6409253Z   Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl.metadata (2.9 kB)
2026-08-28T15:28:37.6633541Z Collecting referencing>=0.28.4 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:37.6669868Z   Downloading referencing-0.37.0-py3-none-any.whl.metadata (2.8 kB)
2026-08-28T15:28:38.0052397Z Collecting rpds-py>=0.25.0 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.0103894Z   Downloading rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.1 kB)
2026-08-28T15:28:38.0323464Z Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-28T15:28:38.0350790Z   Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
2026-08-28T15:28:38.0556896Z Downloading fastapi-0.136.1-py3-none-any.whl (117 kB)
2026-08-28T15:28:38.0620975Z Downloading httpx-0.28.1-py3-none-any.whl (73 kB)
2026-08-28T15:28:38.0690899Z Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
2026-08-28T15:28:38.0746804Z Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
2026-08-28T15:28:38.0846552Z Downloading pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (11.3 MB)
2026-08-28T15:28:38.1550608Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 166.3 MB/s  0:00:00
2026-08-28T15:28:38.1601212Z Downloading plotly-6.7.0-py3-none-any.whl (9.9 MB)
2026-08-28T15:28:38.1953020Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.9/9.9 MB 297.4 MB/s  0:00:00
2026-08-28T15:28:38.1989882Z Downloading pydantic-2.13.4-py3-none-any.whl (472 kB)
2026-08-28T15:28:38.2057113Z Downloading pypdf-6.14.2-py3-none-any.whl (349 kB)
2026-08-28T15:28:38.2120167Z Downloading pytest-9.0.2-py3-none-any.whl (374 kB)
2026-08-28T15:28:38.2185507Z Downloading ruff-0.15.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.4 MB)
2026-08-28T15:28:38.2659552Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 267.4 MB/s  0:00:00
2026-08-28T15:28:38.2710758Z Downloading streamlit-1.57.0-py3-none-any.whl (9.2 MB)
2026-08-28T15:28:38.3143219Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.2/9.2 MB 227.4 MB/s  0:00:00
2026-08-28T15:28:38.3171050Z Downloading uvicorn-0.47.0-py3-none-any.whl (71 kB)
2026-08-28T15:28:38.3224294Z Downloading xlrd-2.0.2-py2.py3-none-any.whl (96 kB)
2026-08-28T15:28:38.3287215Z Downloading yfinance-1.3.0-py2.py3-none-any.whl (133 kB)
2026-08-28T15:28:38.3350310Z Downloading pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
2026-08-28T15:28:38.3463578Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 241.7 MB/s  0:00:00
2026-08-28T15:28:38.3481416Z Downloading altair-6.2.2-py3-none-any.whl (797 kB)
2026-08-28T15:28:38.3563134Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 797.6/797.6 kB 154.9 MB/s  0:00:00
2026-08-28T15:28:38.3582925Z Downloading blinker-1.9.0-py3-none-any.whl (8.5 kB)
2026-08-28T15:28:38.3637137Z Downloading cachetools-7.1.7-py3-none-any.whl (16 kB)
2026-08-28T15:28:38.3691342Z Downloading click-8.5.0-py3-none-any.whl (125 kB)
2026-08-28T15:28:38.3751672Z Downloading gitpython-3.1.61-py3-none-any.whl (222 kB)
2026-08-28T15:28:38.3810488Z Downloading gitdb-4.0.12-py3-none-any.whl (62 kB)
2026-08-28T15:28:38.3863753Z Downloading httpcore-1.0.9-py3-none-any.whl (78 kB)
2026-08-28T15:28:38.3946167Z Downloading numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.9 MB)
2026-08-28T15:28:38.4508298Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.9/16.9 MB 311.4 MB/s  0:00:00
2026-08-28T15:28:38.4545475Z Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.9 MB)
2026-08-28T15:28:38.4817248Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.9/6.9 MB 291.2 MB/s  0:00:00
2026-08-28T15:28:38.4840441Z Downloading pluggy-1.6.0-py3-none-any.whl (20 kB)
2026-08-28T15:28:38.4897162Z Downloading protobuf-7.36.0-cp310-abi3-manylinux2014_x86_64.whl (340 kB)
2026-08-28T15:28:38.4956652Z Downloading pydeck-0.9.3-py2.py3-none-any.whl (11.4 MB)
2026-08-28T15:28:38.5577310Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 203.2 MB/s  0:00:00
2026-08-28T15:28:38.5653738Z Downloading requests-2.34.2-py3-none-any.whl (73 kB)
2026-08-28T15:28:38.5689964Z Downloading charset_normalizer-3.5.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (262 kB)
2026-08-28T15:28:38.5773070Z Downloading idna-3.19-py3-none-any.whl (68 kB)
2026-08-28T15:28:38.5837266Z Downloading smmap-5.0.3-py3-none-any.whl (24 kB)
2026-08-28T15:28:38.5929067Z Downloading tenacity-9.1.4-py3-none-any.whl (28 kB)
2026-08-28T15:28:38.6016489Z Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
2026-08-28T15:28:38.6099584Z Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)
2026-08-28T15:28:38.6149627Z Downloading urllib3-2.7.0-py3-none-any.whl (131 kB)
2026-08-28T15:28:38.6210451Z Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl (79 kB)
2026-08-28T15:28:38.6266039Z Downloading annotated_doc-0.0.5-py3-none-any.whl (5.3 kB)
2026-08-28T15:28:38.6320296Z Downloading annotated_types-0.8.0-py3-none-any.whl (13 kB)
2026-08-28T15:28:38.6374366Z Downloading anyio-4.14.2-py3-none-any.whl (125 kB)
2026-08-28T15:28:38.6440178Z Downloading beautifulsoup4-4.15.0-py3-none-any.whl (109 kB)
2026-08-28T15:28:38.6486340Z Downloading certifi-2026.7.22-py3-none-any.whl (136 kB)
2026-08-28T15:28:38.6549382Z Downloading curl_cffi-0.16.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (13.5 MB)
2026-08-28T15:28:38.7045258Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.5/13.5 MB 285.0 MB/s  0:00:00
2026-08-28T15:28:38.7093120Z Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (217 kB)
2026-08-28T15:28:38.7152686Z Downloading frozendict-2.4.7-py3-none-any.whl (16 kB)
2026-08-28T15:28:38.7210853Z Downloading h11-0.16.0-py3-none-any.whl (37 kB)
2026-08-28T15:28:38.7259700Z Downloading httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (464 kB)
2026-08-28T15:28:38.7325819Z Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB)
2026-08-28T15:28:38.7376757Z Downloading itsdangerous-2.2.0-py3-none-any.whl (16 kB)
2026-08-28T15:28:38.7430660Z Downloading jsonschema-4.26.0-py3-none-any.whl (90 kB)
2026-08-28T15:28:38.7483804Z Downloading attrs-26.1.0-py3-none-any.whl (67 kB)
2026-08-28T15:28:38.7535991Z Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl (18 kB)
2026-08-28T15:28:38.7598854Z Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
2026-08-28T15:28:38.7641663Z Downloading multitasking-0.0.13-py3-none-any.whl (16 kB)
2026-08-28T15:28:38.7692118Z Downloading narwhals-2.25.0-py3-none-any.whl (467 kB)
2026-08-28T15:28:38.7767106Z Downloading packaging-26.3-py3-none-any.whl (129 kB)
2026-08-28T15:28:38.7824445Z Downloading peewee-4.4.0-py3-none-any.whl (191 kB)
2026-08-28T15:28:38.7883284Z Downloading platformdirs-4.11.5-py3-none-any.whl (23 kB)
2026-08-28T15:28:38.7936770Z Downloading pyarrow-25.0.1-cp311-cp311-manylinux_2_28_x86_64.whl (50.1 MB)
2026-08-28T15:28:38.9547085Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.1/50.1 MB 316.3 MB/s  0:00:00
2026-08-28T15:28:38.9643848Z Downloading pygments-2.21.0-py3-none-any.whl (1.3 MB)
2026-08-28T15:28:38.9713578Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 172.4 MB/s  0:00:00
2026-08-28T15:28:38.9725475Z Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
2026-08-28T15:28:38.9793233Z Downloading python_multipart-0.0.32-py3-none-any.whl (30 kB)
2026-08-28T15:28:38.9849995Z Downloading pytz-2026.3.post1-py2.py3-none-any.whl (508 kB)
2026-08-28T15:28:38.9914013Z Downloading referencing-0.37.0-py3-none-any.whl (26 kB)
2026-08-28T15:28:38.9973095Z Downloading rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (371 kB)
2026-08-28T15:28:39.0031752Z Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
2026-08-28T15:28:39.0096722Z Downloading soupsieve-2.9.2-py3-none-any.whl (37 kB)
2026-08-28T15:28:39.0151001Z Downloading starlette-1.6.0-py3-none-any.whl (75 kB)
2026-08-28T15:28:39.0209916Z Downloading typing_inspection-0.4.4-py3-none-any.whl (14 kB)
2026-08-28T15:28:39.0273109Z Downloading websockets-17.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (224 kB)
2026-08-28T15:28:39.0324397Z Downloading et_xmlfile-2.0.0-py3-none-any.whl (18 kB)
2026-08-28T15:28:39.0374039Z Downloading pycparser-3.0-py3-none-any.whl (48 kB)
2026-08-28T15:28:39.3348921Z Building wheels for collected packages: jarvis-finance
2026-08-28T15:28:39.3372663Z   Building editable for jarvis-finance (pyproject.toml): started
2026-08-28T15:28:39.5613482Z   Building editable for jarvis-finance (pyproject.toml): finished with status 'done'
2026-08-28T15:28:39.5618904Z   Created wheel for jarvis-finance: filename=jarvis_finance-0.1.0-0.editable-py3-none-any.whl size=1510 sha256=cafa7bbb9e184b3cec12609b3fdddfd68c10e998ccde2e5d397c31846af5d3f6
2026-08-28T15:28:39.5621196Z   Stored in directory: /tmp/pip-ephem-wheel-cache-b1uhl9sl/wheels/ad/81/a6/5383a3c32505f4e59976cc011a336e07c6284dcaf35f5a7ea5
2026-08-28T15:28:39.5634855Z Successfully built jarvis-finance
2026-08-28T15:28:39.7031657Z Installing collected packages: pytz, multitasking, xlrd, websockets, watchdog, urllib3, typing-extensions, toml, tenacity, soupsieve, smmap, six, ruff, rpds-py, python-multipart, pypdf, pygments, pycparser, pyarrow, protobuf, pluggy, platformdirs, pillow, peewee, packaging, numpy, narwhals, MarkupSafe, itsdangerous, iniconfig, idna, httptools, h11, frozendict, et-xmlfile, click, charset_normalizer, certifi, cachetools, blinker, attrs, annotated-types, annotated-doc, uvicorn, typing-inspection, requests, referencing, python-dateutil, pytest, pydantic-core, plotly, openpyxl, Jinja2, httpcore, gitdb, cffi, beautifulsoup4, anyio, starlette, pydeck, pydantic, pandas, jsonschema-specifications, jarvis-finance, httpx, gitpython, curl_cffi, yfinance, jsonschema, fastapi, altair, streamlit
2026-08-28T15:28:55.3942705Z 
2026-08-28T15:28:55.3968189Z Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 altair-6.2.2 annotated-doc-0.0.5 annotated-types-0.8.0 anyio-4.14.2 attrs-26.1.0 beautifulsoup4-4.15.0 blinker-1.9.0 cachetools-7.1.7 certifi-2026.7.22 cffi-2.1.1 charset_normalizer-3.5.1 click-8.5.0 curl_cffi-0.16.2 et-xmlfile-2.0.0 fastapi-0.136.1 frozendict-2.4.7 gitdb-4.0.12 gitpython-3.1.61 h11-0.16.0 httpcore-1.0.9 httptools-0.8.0 httpx-0.28.1 idna-3.19 iniconfig-2.3.0 itsdangerous-2.2.0 jarvis-finance-0.1.0 jsonschema-4.26.0 jsonschema-specifications-2025.9.1 multitasking-0.0.13 narwhals-2.25.0 numpy-2.4.6 openpyxl-3.1.5 packaging-26.3 pandas-3.0.3 peewee-4.4.0 pillow-12.3.0 platformdirs-4.11.5 plotly-6.7.0 pluggy-1.6.0 protobuf-7.36.0 pyarrow-25.0.1 pycparser-3.0 pydantic-2.13.4 pydantic-core-2.46.4 pydeck-0.9.3 pygments-2.21.0 pypdf-6.14.2 pytest-9.0.2 python-dateutil-2.9.0.post0 python-multipart-0.0.32 pytz-2026.3.post1 referencing-0.37.0 requests-2.34.2 rpds-py-2026.6.3 ruff-0.15.13 six-1.17.0 smmap-5.0.3 soupsieve-2.9.2 starlette-1.6.0 streamlit-1.57.0 tenacity-9.1.4 toml-0.10.2 typing-extensions-4.16.0 typing-inspection-0.4.4 urllib3-2.7.0 uvicorn-0.47.0 watchdog-6.0.0 websockets-17.1 xlrd-2.0.2 yfinance-1.3.0
2026-08-28T15:28:55.6724436Z ##[group]Run git diff --check "origin/${GITHUB_BASE_REF:-main}...HEAD"
2026-08-28T15:28:55.6725005Z [36;1mgit diff --check "origin/${GITHUB_BASE_REF:-main}...HEAD"[0m
2026-08-28T15:28:55.6766201Z shell: /usr/bin/bash -e {0}
2026-08-28T15:28:55.6766494Z env:
2026-08-28T15:28:55.6766771Z   PYTHONPATH: src
2026-08-28T15:28:55.6767029Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:55.6767464Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:55.6768090Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:55.6768656Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:55.6769085Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:55.6769486Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:55.6769984Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:55.6770514Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:55.6770966Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:55.6771417Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:55.6772181Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:55.6772593Z ##[endgroup]
2026-08-28T15:28:55.6956520Z ##[group]Run python -m jarvis_finance.cli.main git-safety-scan .
2026-08-28T15:28:55.6957046Z [36;1mpython -m jarvis_finance.cli.main git-safety-scan .[0m
2026-08-28T15:28:55.6996998Z shell: /usr/bin/bash -e {0}
2026-08-28T15:28:55.6997282Z env:
2026-08-28T15:28:55.6997509Z   PYTHONPATH: src
2026-08-28T15:28:55.6997768Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:55.6998197Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:55.6998826Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:55.6999379Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:55.6999800Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:55.7000184Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:55.7000691Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:55.7001234Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:55.7001687Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:55.7002459Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:55.7002925Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:55.7003310Z ##[endgroup]
2026-08-28T15:28:57.0693753Z GIT_SAFETY_OK
2026-08-28T15:28:57.0909314Z ##[group]Run python -m ruff check \
2026-08-28T15:28:57.0909926Z [36;1mpython -m ruff check \[0m
2026-08-28T15:28:57.0910404Z [36;1m  scripts/ci_portfolio_phase3_gate.py \[0m
2026-08-28T15:28:57.0910934Z [36;1m  src/jarvis_finance/api/main.py \[0m
2026-08-28T15:28:57.0911474Z [36;1m  src/jarvis_finance/api/routers/overview.py \[0m
2026-08-28T15:28:57.0912267Z [36;1m  src/jarvis_finance/api/routers/market.py \[0m
2026-08-28T15:28:57.0912893Z [36;1m  src/jarvis_finance/api/routers/system.py \[0m
2026-08-28T15:28:57.0913524Z [36;1m  src/jarvis_finance/api/schemas/manual_snapshot.py \[0m
2026-08-28T15:28:57.0914138Z [36;1m  src/jarvis_finance/api/schemas/market.py \[0m
2026-08-28T15:28:57.0914744Z [36;1m  src/jarvis_finance/api/schemas/portfolio_data.py \[0m
2026-08-28T15:28:57.0915437Z [36;1m  src/jarvis_finance/api/schemas/portfolio_performance.py \[0m
2026-08-28T15:28:57.0916140Z [36;1m  src/jarvis_finance/api/schemas/portfolio_policy.py \[0m
2026-08-28T15:28:57.0916880Z [36;1m  src/jarvis_finance/api/schemas/performance_activation.py \[0m
2026-08-28T15:28:57.0917808Z [36;1m  src/jarvis_finance/api/schemas/reconciliation.py \[0m
2026-08-28T15:28:57.0918458Z [36;1m  src/jarvis_finance/api/schemas/wealth_cockpit.py \[0m
2026-08-28T15:28:57.0919042Z [36;1m  src/jarvis_finance/api/security.py \[0m
2026-08-28T15:28:57.0919551Z [36;1m  src/jarvis_finance/cli/main.py \[0m
2026-08-28T15:28:57.0920068Z [36;1m  src/jarvis_finance/config/settings.py \[0m
2026-08-28T15:28:57.0920620Z [36;1m  src/jarvis_finance/ledger/cost_basis.py \[0m
2026-08-28T15:28:57.0921175Z [36;1m  src/jarvis_finance/ledger/performance.py \[0m
2026-08-28T15:28:57.0921743Z [36;1m  src/jarvis_finance/market/providers.py \[0m
2026-08-28T15:28:57.0922545Z [36;1m  src/jarvis_finance/quality/freshness.py \[0m
2026-08-28T15:28:57.0923107Z [36;1m  src/jarvis_finance/quality/git_safety.py \[0m
2026-08-28T15:28:57.0923739Z [36;1m  src/jarvis_finance/services/crypto_market_recovery.py \[0m
2026-08-28T15:28:57.0924453Z [36;1m  src/jarvis_finance/services/crypto_reconciliation.py \[0m
2026-08-28T15:28:57.0925110Z [36;1m  src/jarvis_finance/services/crypto_service.py \[0m
2026-08-28T15:28:57.0925703Z [36;1m  src/jarvis_finance/crypto/current_balances.py \[0m
2026-08-28T15:28:57.0926273Z [36;1m  src/jarvis_finance/api/routers/crypto.py \[0m
2026-08-28T15:28:57.0926909Z [36;1m  src/jarvis_finance/api/schemas/crypto_reconciliation.py \[0m
2026-08-28T15:28:57.0927613Z [36;1m  src/jarvis_finance/services/performance_activation.py \[0m
2026-08-28T15:28:57.0928248Z [36;1m  src/jarvis_finance/services/cash_service.py \[0m
2026-08-28T15:28:57.0928857Z [36;1m  src/jarvis_finance/services/household_import.py \[0m
2026-08-28T15:28:57.0929478Z [36;1m  src/jarvis_finance/services/modelled_wealth.py \[0m
2026-08-28T15:28:57.0930109Z [36;1m  src/jarvis_finance/services/asset_price_refresh.py \[0m
2026-08-28T15:28:57.0930754Z [36;1m  src/jarvis_finance/services/market_service.py \[0m
2026-08-28T15:28:57.0931414Z [36;1m  src/jarvis_finance/services/portfolio_analysis_v1.py \[0m
2026-08-28T15:28:57.0932362Z [36;1m  src/jarvis_finance/services/raiffeisen_manual_snapshot.py \[0m
2026-08-28T15:28:57.0933027Z [36;1m  src/jarvis_finance/services/system_ops.py \[0m
2026-08-28T15:28:57.0933627Z [36;1m  src/jarvis_finance/services/wealth_cockpit.py \[0m
2026-08-28T15:28:57.0934240Z [36;1m  src/jarvis_finance/services/portfolio_data.py \[0m
2026-08-28T15:28:57.0934893Z [36;1m  src/jarvis_finance/services/portfolio_performance.py \[0m
2026-08-28T15:28:57.0935558Z [36;1m  src/jarvis_finance/services/portfolio_policy.py \[0m
2026-08-28T15:28:57.0936247Z [36;1m  src/jarvis_finance/services/reconciliation_snapshot.py \[0m
2026-08-28T15:28:57.0937006Z [36;1m  src/jarvis_finance/services/truewealth_productization.py \[0m
2026-08-28T15:28:57.0937713Z [36;1m  src/jarvis_finance/services/truewealth_service.py \[0m
2026-08-28T15:28:57.0938622Z [36;1m  src/jarvis_finance/services/truewealth_valuation.py \[0m
2026-08-28T15:28:57.0939311Z [36;1m  src/jarvis_finance/services/transfer_pairing.py \[0m
2026-08-28T15:28:57.0939929Z [36;1m  src/jarvis_finance/storage/database.py \[0m
2026-08-28T15:28:57.0940498Z [36;1m  src/jarvis_finance/storage/migrations.py \[0m
2026-08-28T15:28:57.0941022Z [36;1m  tests/conftest.py \[0m
2026-08-28T15:28:57.0941489Z [36;1m  tests/unit/test_api_write_security.py \[0m
2026-08-28T15:28:57.0942269Z [36;1m  tests/unit/test_git_safety.py \[0m
2026-08-28T15:28:57.0942898Z [36;1m  tests/unit/test_portfolio_data_ingestion_reconciliation.py \[0m
2026-08-28T15:28:57.0943626Z [36;1m  tests/unit/test_portfolio_performance_foundation.py \[0m
2026-08-28T15:28:57.0944271Z [36;1m  tests/unit/test_portfolio_policy_foundation.py \[0m
2026-08-28T15:28:57.0944925Z [36;1m  tests/unit/test_reconciliation_snapshot_foundation.py \[0m
2026-08-28T15:28:57.0945539Z [36;1m  tests/unit/test_modelled_wealth.py \[0m
2026-08-28T15:28:57.0946086Z [36;1m  tests/unit/test_asset_price_refresh.py \[0m
2026-08-28T15:28:57.0946637Z [36;1m  tests/unit/test_portfolio_analysis_v1.py \[0m
2026-08-28T15:28:57.0947429Z [36;1m  tests/unit/test_raiffeisen_manual_snapshot.py \[0m
2026-08-28T15:28:57.0948058Z [36;1m  tests/unit/test_portfolio_market_analytics_v1.py \[0m
2026-08-28T15:28:57.0948654Z [36;1m  tests/unit/test_wealth_cockpit_v1.py \[0m
2026-08-28T15:28:57.0949229Z [36;1m  tests/unit/test_cash_truewealth_management.py \[0m
2026-08-28T15:28:57.0949782Z [36;1m  tests/unit/test_settings.py \[0m
2026-08-28T15:28:57.0950369Z [36;1m  tests/unit/test_sprint20d_truewealth_productization.py \[0m
2026-08-28T15:28:57.0951069Z [36;1m  tests/unit/test_sprint20d_truewealth_valuation.py \[0m
2026-08-28T15:28:57.0951730Z [36;1m  tests/unit/test_sprint20e_crypto_market_recovery.py \[0m
2026-08-28T15:28:57.0952581Z [36;1m  tests/unit/test_sprint20g1_crypto_reconciliation.py \[0m
2026-08-28T15:28:57.0953198Z [36;1m  tests/unit/test_transfer_pairing_v2.py[0m
2026-08-28T15:28:57.1005533Z shell: /usr/bin/bash -e {0}
2026-08-28T15:28:57.1005951Z env:
2026-08-28T15:28:57.1006267Z   PYTHONPATH: src
2026-08-28T15:28:57.1006620Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:57.1007224Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:57.1008095Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:57.1008883Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:57.1009497Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:57.1010037Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:57.1010734Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:57.1011432Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:57.1012348Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:57.1012992Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:57.1013639Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:57.1014173Z ##[endgroup]
2026-08-28T15:28:57.2153984Z All checks passed!
2026-08-28T15:28:57.2188032Z ##[group]Run python -m compileall -q src tests scripts/ci_portfolio_phase3_gate.py
2026-08-28T15:28:57.2188627Z [36;1mpython -m compileall -q src tests scripts/ci_portfolio_phase3_gate.py[0m
2026-08-28T15:28:57.2227795Z shell: /usr/bin/bash -e {0}
2026-08-28T15:28:57.2228049Z env:
2026-08-28T15:28:57.2228239Z   PYTHONPATH: src
2026-08-28T15:28:57.2228454Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:57.2228819Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:57.2229328Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:57.2229798Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:57.2230155Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:57.2230484Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:57.2230906Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:57.2231359Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:57.2231725Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:57.2232410Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:57.2232791Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:57.2233102Z ##[endgroup]
2026-08-28T15:28:58.0963235Z ##[group]Run python scripts/ci_portfolio_phase3_gate.py
2026-08-28T15:28:58.0963682Z [36;1mpython scripts/ci_portfolio_phase3_gate.py[0m
2026-08-28T15:28:58.1000738Z shell: /usr/bin/bash -e {0}
2026-08-28T15:28:58.1000985Z env:
2026-08-28T15:28:58.1001170Z   PYTHONPATH: src
2026-08-28T15:28:58.1001382Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:58.1001741Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:58.1002530Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:58.1003243Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:58.1003602Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:58.1003922Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:58.1004344Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:58.1004753Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:58.1005159Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:58.1005531Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:58.1005947Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:58.1006281Z ##[endgroup]
2026-08-28T15:28:59.5353461Z sprint5_fixture_schema=40
2026-08-28T15:28:59.9707378Z phase3_migration_gate=PASS
2026-08-28T15:28:59.9708365Z empty_schema=53 integrity=ok ingestion_analysis_scope_rows=0 default_performance_included=0
2026-08-28T15:28:59.9710137Z sprint5_schema=40_to_53 integrity=ok business_digest=bb8a14c6af1f793c4d521db72516f441685ab52f30336d26afba8b2dcbb95a01 scope_normalized=true audit_bound=true second_run_noop=true
2026-08-28T15:28:59.9711685Z settings_guard=PASS production_paths_rejected=true
2026-08-28T15:28:59.9836463Z ##[group]Run mkdir -p /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:59.9837027Z [36;1mmkdir -p /tmp/financemanager-phase3-controls/runtime[0m
2026-08-28T15:28:59.9837393Z [36;1mpython -m pytest -q \[0m
2026-08-28T15:28:59.9837687Z [36;1m  tests/unit/test_api_write_security.py \[0m
2026-08-28T15:28:59.9838004Z [36;1m  tests/unit/test_settings.py \[0m
2026-08-28T15:28:59.9838392Z [36;1m  tests/unit/test_portfolio_data_ingestion_reconciliation.py \[0m
2026-08-28T15:28:59.9838834Z [36;1m  tests/unit/test_portfolio_performance_foundation.py \[0m
2026-08-28T15:28:59.9839230Z [36;1m  tests/unit/test_portfolio_policy_foundation.py \[0m
2026-08-28T15:28:59.9839644Z [36;1m  tests/unit/test_reconciliation_snapshot_foundation.py \[0m
2026-08-28T15:28:59.9840034Z [36;1m  tests/unit/test_modelled_wealth.py \[0m
2026-08-28T15:28:59.9840354Z [36;1m  tests/unit/test_asset_price_refresh.py \[0m
2026-08-28T15:28:59.9840720Z [36;1m  tests/unit/test_portfolio_analysis_v1.py \[0m
2026-08-28T15:28:59.9841076Z [36;1m  tests/unit/test_raiffeisen_manual_snapshot.py \[0m
2026-08-28T15:28:59.9841447Z [36;1m  tests/unit/test_portfolio_market_analytics_v1.py \[0m
2026-08-28T15:28:59.9842174Z [36;1m  tests/unit/test_wealth_cockpit_v1.py \[0m
2026-08-28T15:28:59.9842646Z [36;1m  tests/unit/test_cash_truewealth_management.py \[0m
2026-08-28T15:28:59.9842992Z [36;1m  tests/unit/test_transfer_pairing_v2.py[0m
2026-08-28T15:28:59.9880616Z shell: /usr/bin/bash -e {0}
2026-08-28T15:28:59.9880869Z env:
2026-08-28T15:28:59.9881055Z   PYTHONPATH: src
2026-08-28T15:28:59.9881268Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:59.9881636Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-28T15:28:59.9882508Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-28T15:28:59.9882986Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-28T15:28:59.9883332Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:59.9883661Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:59.9884077Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:59.9884481Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:59.9884846Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:59.9885212Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:59.9885582Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:59.9885896Z ##[endgroup]
2026-08-28T15:29:35.3443954Z ........................................................................ [ 46%]
2026-08-28T15:30:01.0944156Z ........................................................................ [ 92%]
2026-08-28T15:30:05.8487572Z ...........                                                              [100%]
2026-08-28T15:30:05.8488799Z =============================== warnings summary ===============================
2026-08-28T15:30:05.8492594Z ../../../../../opt/hostedtoolcache/Python/3.11.16/x64/lib/python3.11/site-packages/fastapi/testclient.py:1
2026-08-28T15:30:05.8494803Z   /opt/hostedtoolcache/Python/3.11.16/x64/lib/python3.11/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
2026-08-28T15:30:05.8496378Z     from starlette.testclient import TestClient as TestClient  # noqa
2026-08-28T15:30:05.8496830Z 
2026-08-28T15:30:05.8497168Z -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
2026-08-28T15:30:05.8497804Z 155 passed, 1 warning in 65.00s (0:01:04)
2026-08-28T15:30:06.1474058Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-28T15:30:06.1475342Z Post job cleanup.
2026-08-28T15:30:06.2804200Z (node:2298) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-08-28T15:30:06.2805661Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-08-28T15:30:06.3131197Z [command]/usr/bin/tar --posix -cf cache.tzst --exclude cache.tzst -P -C /home/runner/work/FinanceManager/FinanceManager --files-from manifest.txt --use-compress-program zstdmt
2026-08-28T15:30:07.1841291Z (node:2298) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.
2026-08-28T15:30:08.1697393Z Sent 0 of 157225495 (0.0%), 0.0 MBs/sec
2026-08-28T15:30:09.1705497Z Sent 90116631 of 157225495 (57.3%), 42.9 MBs/sec
2026-08-28T15:30:09.3073031Z Sent 157225495 of 157225495 (100.0%), 70.2 MBs/sec
2026-08-28T15:30:09.6114842Z Cache saved with the key: setup-python-Linux-x64-24.04-Ubuntu-python-3.11.16-pip-1142f0e2496362389faab45cc2b2d5dacbb96b059f6c5143fd25b1b0407d64f2
2026-08-28T15:30:09.6273342Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-28T15:30:09.6274619Z Post job cleanup.
2026-08-28T15:30:09.7278275Z [command]/usr/bin/git version
2026-08-28T15:30:09.7334958Z git version 2.55.0
2026-08-28T15:30:09.7407651Z Temporarily overriding HOME='/home/runner/work/_temp/a217642e-32b0-4573-8d87-5a256269e1df' before making global git config changes
2026-08-28T15:30:09.7409274Z Adding repository directory to the temporary git global config as a safe directory
2026-08-28T15:30:09.7410712Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/FinanceManager/FinanceManager
2026-08-28T15:30:09.7515231Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-08-28T15:30:09.7613841Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-08-28T15:30:09.7983167Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-08-28T15:30:09.8025614Z http.https://github.com/.extraheader
2026-08-28T15:30:09.8053601Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-08-28T15:30:09.8109224Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-08-28T15:30:09.8552959Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-08-28T15:30:09.8643133Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-08-28T15:30:09.9354212Z Cleaning up orphan processes
2026-08-28T15:30:09.9673567Z ##[warning]Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
